#ifndef FUNCTIONS_H
#define FUNCTIONS_H

/*!
 * \file functions.h
 * \brief Déclaration des fonctions.
 * \author CARBONNEL Jessie
 * \version 1.0
 * \date 11 Avril 2013
 */

#include <vector>
#include <set>

/*!
 * \fn vector< vector<int> > scpo(PreferenceSet P, Omega O);
 * \brief Permet de calculer un péordre sur Omega en fonction des préférences.
 * \param P un ensemble de préférences.
 * \param O Un ensemble d'Outcomes.
 * \return Retourne un ensemble d'ensemble d'entier constituant un préodre sur les Outcomes d'Omega.
 */
std::vector< std::vector<int> > scpo(PreferenceSet P, Omega O);

/*!
 * \fn vector<Constraint> generateConstraints(std::set<int>& omega,const PreferenceSet& P,Omega& O);
 * \brief Permet de générer un vecteur de Contraintes.
 * \param omega un ensemble d'Outcomes.
 * \param P un ensemble de préférences.
 * \param O l'ensemble d'alternatives combinatoires.
 * \return Retourne un vecteur de contraintes générées à partir des préférences.
 */
std::vector<Constraint> generateConstraints(std::set<int>&,const PreferenceSet&,Omega&);

/*!
 * \fn void generateIndex(Omega& O, std::set<int>& result);
 * \brief Permet de générer dans un set l'ensembles des Outcomes.
 * \param O Un ensemble d'Outcomes.
 * \param result le set qui va contenir les Outcomes.
 * \return Ne renvoie rien.
 */
void generateIndex(Omega&, std::set<int>&);

#endif // FUNCTIONS_H
